package nz.ac.massey.whatiscomputerscience.core.model;

import java.util.Collection;
import java.util.Observable;

import nz.ac.massey.whatiscomputerscience.core.model.animator.Animatable;

/**
 * Defines a Model
 * TODO complete these comments
 *
 * @author Francis Stephens
 */
public abstract class Model extends Observable implements Animatable
{	
	/**
	 * Terminates this model's thread
	 * Termination is not guaranteed to be instantaneous
	 * But implementations should ensure that it is timely
	 */
	public abstract void terminate( );
	
	/**
	 * @return An unordered immutable collection of polygons that describe the current stable state of this model
	 */
	public abstract Collection<Polygon> getViewableState( );
}